package com.ssy.lingxi.order.model.constant;

import java.time.format.DateTimeFormatter;

/**
 * 服务常量定义
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-15
 */
public class OrderServiceContants {
    /**
     * 订单服务内部延迟队列定义
     */
    public final static String ORDER_SERVICE_DELAY_QUERY = "order_service_delay_queue";
    public final static String ORDER_SERVICE_DELAY_EXCHANGE = "order_service_delay_exchange";
    public final static String ORDER_SERVICE_DELAY_ROUTING_KEY = "order_service_delay_key";

    /**
     * 物料价格信息变更MQ任务
     * 采购询价合同、采购竞价合同、采购招标合同、请购单采购 确认收货时需要同步更新物料价格库
     */
    public final static String ORDER_GOODS_PRICE_CHANGE_QUEUE = "order_goods_price_change_queue";
    public final static String ORDER_GOODS_PRICE_CHANGE_EXCHANGE = "order_goods_price_change_exchange";
    public final static String ORDER_GOODS_PRICE_CHANGE_ROUTING_KEY = "order_goods_price_change_routing_key";

    /**
     * 非登录用户操作的其他情况（如：定时任务），记录在订单内外流转记录中的操作人员
     */
    public static final String SYSTEM_NAME = "系统";

    /**
     * HttpHead中，Token所在的字段名
     */
    public static final String USER_TOKEN_HTTP_HEADERS_KEY = "token";

    /**
     * HttpHeader中，客户端标识所在的字段名
     */
    public static final String USER_LOGIN_SOURCE_HTTP_HEADERS_KEY = "source";

    /**
     * 省市区“全国”的编码
     */
    public static final String COUNTRY_CODE = "100000";

    /**
     * 省市区“全国”的名称
     */
    public static final String COUNTRY_NAME = "全国";

    /**
     * 省市区表中“省”的层级
     */
    public static final Integer PROVINCE_LEVEL = 1;

    /**
     * 定义在工作流Extension属性中，表示采购商内部状态的Key的名称
     */
    public static final String PROCESS_BUYER_INNER_STATUS_KEY = "buyer";

    /**
     * 定义在工作流Extension属性中，表示供应商内部状态的Key的名称
     */
    public static final String PROCESS_VENDOR_INNER_STATUS_KEY = "vendor";

    /**
     * 定义在工作流Extension属性中，表示外部状态的Key的名称
     */
    public static final String PROCESS_OUTER_STATUS_KEY = "outer";

    /**
     * 定义在工作流Extension属性中，表示当前操作下一步是支付节点的Key的名称
     */
    public static final String PROCESS_NEXT_PAY_KEY = "next_pay";

    /**
     * 定义在工作流Extension属性中，表示当前操作是支付节点的Key的名称
     */
    public static final String PROCESS_PAY_KEY = "pay";

    /**
     * 定义在工作流Extension属性中，表示当前操作是支付节点的Key的名称
     */
    public static final String PROCESS_PAY_START_KEY = "pay_start";

    /**
     * 定义在工作流Extension属性中，表示当前操作是支付节点的Key的名称
     */
    public static final String PROCESS_PAY_END_KEY = "pay_end";

    /**
     * LocalDateTime 日期时间默认的格式
     */
    public static final DateTimeFormatter DEFAULT_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * LocalDateTime 日期时间默认的格式
     */
    public static final DateTimeFormatter DEFAULT_MINUTE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");

    /**
     * LocalDateTime 日期默认的格式
     */
    public static final DateTimeFormatter DEFAULT_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");

    /**
     * 前端预下单信息缓存超时时间
     */
    public static final long PRE_ORDER_CACHE_TIME_SECONDS = 30 * 60;

    /**
     * 支付结果在缓存中Key的前缀
     */
    public static final String PAY_RESULT_CACHE_PREFIX = "ord:pay:";

    /**
     * 支付结果在缓存中的超时时间（秒）
     */
    public static final long PAY_RESULT_CACHE_SECONDS = 2 * 60;

    /**
     * 支付结果在缓存中的超时时间（秒）
     */
    public static final long ORDER_PAYMENT_CACHE_SECONDS = 24 * 60 * 60;

    /**
     * 流程无跳转条件的执行参数
     */
    public static final Integer DIRECT_EXEC_TASK = -1;

    /**
     * 订单审核 - 同意，接受，确认到账（工作流网关的跳转条件）
     */
    public static final Integer AGREE = 1;

    /**
     * 订单审核 - 不同意，拒绝，确认未到账（工作流网关的跳转条件）
     */
    public static final Integer DISAGREE = 0;

    /**
     * 订单当前的支付批次尚未全部支付完毕的跳转参数（工作流网关的跳转条件）
     */
    public static final Integer PAY_SERIAL_UNCOMPLETED = 2;

    /**
     * 采购商内部审核工作流外部流程节点（子流程）的名称
     */
    public static final String BUYER_VALIDATE_EXTERNAL_TASK_NAME = "提交订单";

    /**
     * 供应商内部审核工作流外部流程节点（子流程）的名称
     */
    public static final String VENDOR_VALIDATE_EXTERNAL_TASK_NAME = "确认订单";

    /**
     * 剩余抵扣金额（当积分足够抵扣订单金额时，剩余1角用于支付）
     */
    public static final Double SURPLUS_DEDUCTION_AMOUNT = 0.1D;
}
